#ifndef QUEUE_H
#define QUEUE_H

#include "binarytree.h"

typedef struct QueueVal {
    BinaryTreeNode val;
    int x;
    int y;
} QueueVal;

typedef struct QueueNode {
    QueueVal val;
    QueueNode* nxt;
    QueueNode* tail;
} QueueNode, *Queue;

// @ 创建队列
// @ return : Queue : 新队列
Queue CreateQueue();

// @ 入队
// @ que : Queue : 队列
// @ node : QueueVal : 入队元素
void EnQueue(Queue que, QueueVal node);

// @ 出队
// @ que : Queue : 队列
// @ return : QueueVal : 队首元素
QueueVal DeQueue(Queue que);

// @ 队列是否为空
// @ que : Queue : 队列
// @ return : bool : 队列为空为true,否则为false
bool IsQueueEmpty(Queue que);

#endif // QUEUE_H
